                             - 162 -

                    2.  .

        .  -,     
  ,           
. -,       
  .      
  .     (),    
     .     ,  
  ,   ,  
   .
             6845,
  [4.1.1].    , -
      .    6845  
  ,       -
   [4.2.6].        
  .       ,  
            
 ,     .
         ,   
 ,          
           
 ,   ,    -
   .    -
   8        
      2-    
 BIOS,     0040:0050H.      
     ,   0,   
   ,     0.  -
   8 ,   , -
     .

                             - 163 -

   4.2.1     .

            
      [4.2.2].  
       25    80 ( 40)
.          
,   1,       
1,1.              
   0,0.

    .

       1  25,    1  80.  -
   LOCATE,      -
: LOCATE ,.       ,
              
,      ,   -
  24- .     25-    -
 LOCATE  (          KEY
OFF).         24  25
     PRINT    (  
   24,80  25,80    -
   [4.3.1]).      -
             
.

100 FOR N = 1 TO 25     '   
110 LOCATE N,40         '    
120 PRINT CHR$(186);    '  
130 NEXT                '   

       ,    
LOCATE      .   -
,      ,  ,   -
      .   ,   
 ,    .  
   ,    -
 ,      , 
   .

    .

         -
       .  2 
10H  ,      -
.         
    (  BH)      0.
DH:DL      ,       0.
             
     .

;---    13,  39
   MOV  AH,2        ; 
   MOV  BH,0        ; 
   MOV  DH,13       ;
   MOV  DL,39       ;
   INT  10H         ; 

                             - 164 -

          
    ANSI.SYS,     
    .         
.     ,       
   9  21H.   
  Esc (ASCII 27),     $.
   Esc[,H$,       -
   ,  Esc   ASCII 27.  , 
27,'10;60H$'     10,  60.

          ,    
       ,    Esc--
       .   
       .

;---  
POSITION_1   DB   27,'[10;30H$'
STRING_1     DB   'There are two options:$'
POSITION_2   DB   27,'[13;32H$'
STRING_2     DB   '(1) Review part 1$'
POSITION_3   DB   27,'[15;32H$'
STRING_3     DB   '(2) Move on to part 2$'
;--- 
   MOV  AH,9           ;   
   LEA  DX,POSITION_1  ;1-   
   INT  21H            ; 
   LEA  DX,STRING_1    ;1-  
   INT  21H            ; 
   LEA  DX,POSITION_2  ; ..
   INT  21H            ;
   LEA  DX,STRING_2    ;
   INT  21H            ;
   LEA  DX,POSITION_3  ;
   INT  21H            ;
   LEA  DX,STRING_3    ;
   INT  21H            ;

    .

    14  15  6845   .  
        -
    ,        DOS   BIOS
          -
.      ,        
,          , 
2-  ,      BIOS.     
,     0040:0050,     
  ,          
 .      
 ,     .
        14  15    0 
1999,   2000 (25*80)  .  
        0  3999,  
       ( 

                             - 165 -

        -
   1  ).     ,
  ,            :  
 14 - ,  15 - .

;--- 
   MOV  BL,24         ;  BL (0-24)
   MOV  BH,79         ;  BH (0-79)
   CALL SET_CURSOR    ; 

;---  
SET_CURSOR  PROC
   ;     
       MOV  DX,3B4H   ;   6845
       MOV  AL,15     ;  15
       OUT  DX,AL     ; 
   ;  
       MOV  AL,80     ;    80
       MUL  BL        ; AX -  ,   80
       MOV  BL,BH     ;    BL
       SUB  BH,BH     ; BL  BX
       ADD  AX,BX     ;  
   ;   
       INC  DX        ;  
       OUT  DX,AL     ;  
   ;     
       MOV  AL,14     ;  
       DEC  DX        ;   
       OUT  DX,AL     ; 
   ;   
       INC  DX        ;  
       MOV  AL,AH     ;    AL
       OUT  DX,AL     ;  
       RET
SET_CURSOR    ENDP

                             - 166 -

   4.2.2   

          -
  :    ,     ,   ..
         -
  .     MS DOS  -
     .

    .

               
Esc-.   ,    
   9  21H.      
.      MS DOS
     ,        .
    Esc (ASCII 27),     [,
  $    .       
,     ,   .   
  3 :

                    3A
                     3B
                   3C
                    3D

    ASCII.  , , 33C
(33  )  33,'C';   '33C'.   -
    1-8       
 ,    .    -
    Esc-,     
     .

;---  
CURSOR_RIGHT   DB   27,'[9C$'

;---   
   MOV  BH,0             ; 
   MOV  DH,1             ;
   MOV  DL,5             ;
   MOV  AH,2             ;  
   INT  10H              ; 
;--- 
   LEA  BX,CURSOR_RIGHT  ;BX    DX
   MOV  CX,8             ;   
   MOV  DL,'0'           ;  0
NEXT_NUMBER:   MOV  AH,2 ; DOS   
   INT  21H              ; 
   INC  DL               ;    ASCII
   XCHG DX,BX            ;     DX
   MOV  AH,9             ;  
   INT  21H              ;   9  
   XCHG DX,BX            ;  DX  ASCII
   LOOP NEXT_NUMBER      ;   

                             - 167 -

      Esc-,   
            
  .      ,  
       .  ,  
  - Esc [=7h (  , 27,'[=7h').     
       
 Esc [=7l (27,'[=7l').

                             - 168 -

   4.2.3    .

      6845.    -
   .  ,    -
      [4.3.1]     
          
.  ,   6845     -
 ,     .   [4.2.6] -
    ""  .

    .

           -
 .    ,   
INPUT,      .       
,      INKEY$,      
     LOCATE  1 (0  -
 ). ,      LOCATE
   ,      -
.

   100 LOCATE 15,40,1  ; ,   15,40

   100 LOCATE ,,1      ;    

   100 LOCATE ,,0      ;  

           
LOCATE      .    
,     INPUT    INPUT$     
.

    .

         ,    
,     .    -
       ,     
.        , 
   2  10H     
26- .  ,      , 
     25,0.

   MOV  BH,0    ;  ( 0  )
   MOV  DH,25   ;
   MOV  DL,0    ;
   MOV  AH,2    ; 
   INT  10H     ;    

                             - 169 -

    .

     6   10  6845 [4.1.1]   ,
    1,    ,    0. 
     " "   ,
    "  "  
  [4.2.4].       , 
 ,         10 
32,    6.       
   "  " .   -
      11.   "  "
    ,      
.

;--- 
   MOV  DX,3B4H     ;    6845
   MOV  AL,10       ;  10
   OUT  DX,AL       ; 
   INC  DX          ;     
   MOV  AL,32       ;  6   
   OUT  DX,AL       ; 
;---  
   MOV  AL,11       ; " "
   OUT  DX,AL       ; 

                             - 170 -

   4.2.4   .

            -
 ,     .       
 ,     "
" ,   - " ".  
      14 ,  
0  13,  .    -
      .   
    2-10,      
    12  13,       
  .
    200-       
 8 ,         .  8
    0  7,  ,   -
    7. (,    
  ,        
 7    ,        -
  .)     
14-  ,      -
 ,         -
 ,    8- .
            
.        
 ,  " "  0,  " -
"  13 (     
" "  7).    ""  "-
"   ,     .   
 " "    ""   -
,    ,      -
 . ,  " "  12,  "-
"  - 1,     12,  13,  0 ,
, 1.           
,         ,    
.
   BIOS  2-     0040:0060, 
   ""  "" .  
   " ",   - "".

    .

        LOCATE       
      ,      .
,   ""   ""  - 
4-    5- ,    LOCATE.    
  ,         .
 ,    ,   
2  12,   LOCATE ,,,2,12. ,   
 ,    .   -
   .  [4.2.3].

                             - 171 -

    .

    1   BIOS  10H    ""  
""  .   CH    "",
  CL - "" .

;--- ""  ""  
   MOV  AH,1      ; 
   MOV  CH,0      ;    
   MOV  CL,7      ;    
   INT  10H       ;
    .

    10  11      6845  
""  "" , .     
    3B5H   -
   3D5H -     PCjr.     
          , 
  3B4H (.  [4.1.1]).     
 .    ""  (#10) 
5   6       .   
 ,           0,  
    ""     
 0.      .

;--- "" 
   MOV  DX,3B4H     ;    6845
   MOV  AL,10       ;  6845
   OUT  DX,AL       ; 
   MOV  AL,0        ; " " 0
   INC  DX          ;   
   OUT  DX,AL       ;  " "
;--- " "
   MOV  AL,11       ;  11
   DEC  DX          ;   
   OUT  DX,AL       ; 
   MOV  AL,7        ; " " 7
   INC  DX          ;   
   OUT  DX,AL       ;  " "

                             - 172 -

   4.2.5 //  .

          ,
              
,       .    
          
 BIOS.    2- ,  
   0040:0050.    
0,    -  1  ..       
  ,     -   .  ,
   ,   .

    .

      CRSLIN  ,  POS -  .
 POS        , .. 
     POS(0).    
    ,      -
.   ,        
 INPUT [4.2.3].

100 ROW = CRSLIN        '  
110 COL = POS(0)        '  
120 LOCATE 25,1         '    
130 INPUT "Enter file name", F$  '  
140 LOCATE ROW,COL,1    '  

    .

     3   10H      DH,  
 -  DL.           BH   
( 0   ).

;---  
   MOV  AH,3     ; 
   MOV  BH,0     ; 0
   INT  10H      ;:  DH:DL

   MS DOS   Esc-  
   .   , 
  ""    .  -
      . -
     - Esc[s,    -
 - Esc[u.      .

;---  
SAVE_CURSOR     DB   27,'[s$'
RESTORE_CURSOR  DB   27,'[u$'

;--- 
   LEA  DX,SAVE_CURSOR   ;    DX
   MOV  AH,9             ;   
   INT  21H              ;  

                             - 173 -

;--- 
   LEA  DX,RESTORE_CURSOR   ;    DX
   MOV  AH,9             ;   
   INT  21H              ;  

    .

    14  15  6845    -
,    [4.1.1].       
14.       0    1999   80  
   0  999   40 .     -
       .    
  ,         
   .        
        
     ,      -
       , -
  .   ,  BIOS 
     ,      -
    [4.5.3].     
  14  15    -
  ,         
      ,       -
    BIOS.

                             - 174 -

   4.2.6    .

       ,      
,   .          
    [4.2.4]    
[4.2.3].        ,   
          -
 [4.3.1].     ""  , 
         -
.       ""     
.
         -
    ,    .   -
-            
ASCII 112.   -  ,   
 .        128  
 ,        ,    128,
  .    -   
  (  ASCII 1).  , ,  -
         -
       , 
     ,   -
   ASCII 17  27. ,   
    ,     -
       .

    .

              
     .    CURSORPOSITION  
 ,      .  
      0  3998.     -
 1          -
   112       .  -
 FORMERATTRIBUTE        ,  
         .

500 '''    
 .
560 IF EXTENDEDCODE = 77 THEN GOSUB 5000  ' 

5000 '''      
5010 POKE CURSORPOSITION+1,FORMERATTRIBUTE  '. 
5020 CURSORPOSITION = CURSORPOSITION+2      ' 
5030 FORMERATTRIBUTE = PEEK(CURSORPOSITION+1)  '. 
5040 POKE CURSORPOSITION+1,112              ' 
5050 RETURN                                 ' 

                             - 175 -

    .

          :

;---      
CURSOR_RIGHT:  MOV  BX,CURSORPOSITION  ; 
   INC  BX                  ;   
   MOV  AL,FORMERATTRIBUTE  ;  
   MOV  ES:[BX],AL          ; 
   INC  BX                  ;   
   MOV  CURSORPOSITION,BX   ;  
   MOV  AL,ES:[BX]+1        ;   
   MOV  FORMERATTRIBUTE,AL  ; 
   MOV  AL,112              ;    
   MOV  ES:[BX]+1,AL        ;    